package com.gx.service;


import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.gx.model.dto.task.FlowTaskCompleteDto;
import com.gx.model.dto.task.FlowTaskReturnDto;
import com.gx.model.dto.task.TaskQueryDto;
import com.gx.model.vo.FlowTaskVo;
import com.gx.model.vo.MyHisTaskVo;
import com.gx.model.vo.ReturnTaskVo;
import org.flowable.task.api.Task;

import java.util.List;

/**
 * 流程任务处理
 *
 * @author lpj
 */
public interface FlowTaskService {
    /**
     * 待办任务列表
     *
     * @param dto 列表条件
     * @return 列表
     */
    Page<FlowTaskVo> todoList(TaskQueryDto dto);

    /**
     * 任务审批
     *
     * @param completeDto 审批参数
     */
    void complete(FlowTaskCompleteDto completeDto);

    /**
     * 下一节点通知
     *
     * @param processDefinitionName 流程名称
     * @param nextTask              待办列表
     */
    void sendNextTaskMsg(String processDefinitionName, Task nextTask);

    /**
     * 任务回退
     *
     * @param returnDto 回退参数
     */
    void taskReturn(FlowTaskReturnDto returnDto);

    /**
     * 获取可回退节点
     *
     * @param taskId 任务Id
     * @return 可回退节点
     */
    List<ReturnTaskVo> findReturnTaskList(String taskId);

    /**
     * 我发起的任务
     *
     * @param dto 参数
     * @return 结果
     */
    Page<FlowTaskVo> myProcess(TaskQueryDto dto);

    /**
     * 已处理任务列表
     *
     * @param dto 参数
     * @return 列表
     */
    Page<FlowTaskVo> finishedList(TaskQueryDto dto);

    /**
     * 已处理数据列表
     *
     * @param dto 参数
     * @return 列表
     */
    Page<MyHisTaskVo> getMyHisTaskList(TaskQueryDto dto);
}
